package com.sxpi.chapter.chapter04.c01;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author 飞哥
 * @Title: 学相伴出品
 * @Description: 飞哥B站地址：https://space.bilibili.com/490711252
 * 记得关注和三连哦！
 * @Description: 我们有一个学习网站：https://www.kuangstudy.com
 * @date 2022-09-01$ 2:22$
 */
public class DrawController {

    /**
     * 随机抽取指定数量的用户
     *
     * @param count
     * @return
     */
    public List<User> doRandomUser(List<User> userList, int count) {
        // 如何人数不够，之间返回
        if (userList.size() <= count) {
            return userList;
        }
        // 乱序集合
        Collections.shuffle(userList);
        // 取出指定数量的中奖用户
        List<User> list = new ArrayList<>(count);
        for (int i = 0; i < count; i++) {
            list.add(userList.get(i));
        }
        return list;
    }

    /**
     * 按照权重的方式
     * @param count
     * @return
     */
    public List<User> doWeightUser(List<User> userList, int count) {
        // 如何人数不够，之间返回
        if (userList.size() <= count) {
            return userList;
        }
        // 乱序集合
        userList.sort((a, b) -> {
            int e = b.getUserWeight() - a.getUserWeight();
            if (e == 0){
                return 0;
            }
            return e > 0 ? 1 : -1;
        });

        // 取出指定数量的中奖用户
        List<User> list = new ArrayList<>(count);
        for (int i = 0; i < count; i++) {
            list.add(userList.get(i));
        }
        return list;
    }

}
